/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

package ac.persistence;

import ac.entities.Alimento;
import ac.entities.Animal;
import ac.entities.EspDie;
import ac.entities.FechaAli;
import ac.entities.LoFe;
import ac.entities.Lote;
import com.ibatis.sqlmap.client.SqlMapClient;
import java.io.IOException;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.HashMap;

/**
 *
 * @author freddy
 */
public class PersistenceFreddy {

    public ArrayList<Animal> individuosPorTanque(int idTanque) {
        ArrayList<Animal> animales = null;
        try {
            SqlMapClient sqlMap = SqlConnector.getInstance().getReady();
            animales = (ArrayList) sqlMap.queryForList("buscarAnimalesPorTanque",idTanque);
        } catch (IOException ioe) {
            ioe.printStackTrace();
        } catch (SQLException sqle) {
            sqle.printStackTrace();
        } finally {
            return animales;
        }
    }

    public FechaAli UltimaFechaAli(int idAnimal) {
        FechaAli fechaAli = null;
        try {
            SqlMapClient sqlMap = SqlConnector.getInstance().getReady();
            fechaAli = (FechaAli) sqlMap.queryForObject("buscarUltimaFechaAli",idAnimal);
        } catch (IOException ioe) {
            ioe.printStackTrace();
        } catch (SQLException sqle) {
            sqle.printStackTrace();
        } finally {
            return fechaAli;
        }
    }

    public FechaAli UltimaFechaAliG(int idGrupo) {
        FechaAli fechaAli = null;
        try {
            SqlMapClient sqlMap = SqlConnector.getInstance().getReady();
            fechaAli = (FechaAli) sqlMap.queryForObject("buscarUltimaFechaAliG",idGrupo);
        } catch (IOException ioe) {
            ioe.printStackTrace();
        } catch (SQLException sqle) {
            sqle.printStackTrace();
        } finally {
            return fechaAli;
        }
    }

    public ArrayList<Alimento> alimentosPorAnimal(int idAnimal) {
        ArrayList<Alimento> alimentos = null;
        System.out.println("LLEGA A PERSISTENCIA");
        try {
            SqlMapClient sqlMap = SqlConnector.getInstance().getReady();
            alimentos = (ArrayList) sqlMap.queryForList("buscarAlimentosPorAnimal",idAnimal);
            System.out.println("PERSISTENCIA: "+ alimentos.get(0).getNombre());
        } catch (IOException ioe) {
            ioe.printStackTrace();
        } catch (SQLException sqle) {
            sqle.printStackTrace();
        } catch (Exception e) {
            e.printStackTrace();
        }finally {
            return alimentos;
        }
    }

    public ArrayList<Alimento> alimentosPorGrupo(int idGrupo) {
        ArrayList<Alimento> alimentos = null;
        try {
            SqlMapClient sqlMap = SqlConnector.getInstance().getReady();
            alimentos = (ArrayList) sqlMap.queryForList("buscarAlimentosPorGrupo",idGrupo);
        } catch (IOException ioe) {
            ioe.printStackTrace();
        } catch (SQLException sqle) {
            sqle.printStackTrace();
        } catch (Exception e) {
            e.printStackTrace();
        }finally {
            return alimentos;
        }
    }

    public EspDie buscarEspDie(int idAnimal, int idAlimento) {
        EspDie espdie = null;
        HashMap map = new HashMap();
        map.put("idAnimal",idAnimal);
        map.put("idAlimento",idAlimento);
        try {
            SqlMapClient sqlMap = SqlConnector.getInstance().getReady();
            espdie = (EspDie) sqlMap.queryForObject("buscarEspDie",map);
        } catch (IOException ioe) {
            ioe.printStackTrace();
        } catch (SQLException sqle) {
            sqle.printStackTrace();
        } catch (Exception e) {
            e.printStackTrace();
        }finally {
            return espdie;
        }
    }

    public EspDie buscarEspDieG(int idGrupo, int idAlimento) {
        EspDie espdie = null;
        HashMap map = new HashMap();
        map.put("idGrupo",idGrupo);
        map.put("idAlimento",idAlimento);
        try {
            SqlMapClient sqlMap = SqlConnector.getInstance().getReady();
            espdie = (EspDie) sqlMap.queryForObject("buscarEspDieG",map);
        } catch (IOException ioe) {
            ioe.printStackTrace();
        } catch (SQLException sqle) {
            sqle.printStackTrace();
        } catch (Exception e) {
            e.printStackTrace();
        }finally {
            return espdie;
        }
    }


    public ArrayList<Lote> buscarLoteAVencer(int idAlimento) {
        ArrayList<Lote> lotes = null;
        try {
            SqlMapClient sqlMap = SqlConnector.getInstance().getReady();
            lotes = (ArrayList) sqlMap.queryForList("buscarLoteAVencer",idAlimento);
        } catch (IOException ioe) {
            ioe.printStackTrace();
        } catch (SQLException sqle) {
            sqle.printStackTrace();
        } catch (Exception e) {
            e.printStackTrace();
        }finally {
            return lotes;
        }
    }

    public Boolean restarCantidadLote(int idLote,int cantidad) {
        HashMap map = new HashMap();
        map.put("idLote", idLote);
        map.put("cantidad", cantidad);
        boolean result= false;
        try {
            SqlMapClient sqlMap = SqlConnector.getInstance().getReady();
            sqlMap.update("restarCantidadLote",map);
            result = true;
        } catch (IOException ioe) {
            ioe.printStackTrace();
            result = false;
        } catch (SQLException sqle) {
            sqle.printStackTrace();
            result = false;
        } catch (Exception e) {
            e.printStackTrace();
            result = false;
        }finally {
            return result;
        }
    }

    public boolean insertFechaAliAni (FechaAli nueva) {
        boolean resultado = false;

        try {
            SqlMapClient sqlMap = SqlConnector.getInstance().getReady();
            sqlMap.insert("insertFechaAliAni", nueva);
            resultado = true;
        } catch (IOException ioe) {
            ioe.printStackTrace();
        } catch (SQLException sqle) {
            sqle.printStackTrace();
        }
        return resultado;
    }

    public boolean insertFechaAliG (FechaAli nueva) {
        boolean resultado = false;

        try {
            SqlMapClient sqlMap = SqlConnector.getInstance().getReady();
            sqlMap.insert("insertFechaAliG", nueva);
            resultado = true;
        } catch (IOException ioe) {
            ioe.printStackTrace();
        } catch (SQLException sqle) {
            sqle.printStackTrace();
        }
        return resultado;
    }


    public int buscarTanAniAT(int idAnimal, int idTanque) {
        int result =0;
        HashMap map = new HashMap();
        map.put("idAnimal",idAnimal);
        map.put("idTanque",idTanque);
        try {
            SqlMapClient sqlMap = SqlConnector.getInstance().getReady();
            result = (Integer) sqlMap.queryForObject("buscarTanAniAT",map);
        } catch (IOException ioe) {
            ioe.printStackTrace();
        } catch (SQLException sqle) {
            sqle.printStackTrace();
        } catch (Exception e) {
            e.printStackTrace();
        }finally {
            return result;
        }
    }

     public int UltimoFechaAli() {
        int fechaAli = 0;
        try {
            SqlMapClient sqlMap = SqlConnector.getInstance().getReady();
            fechaAli = (Integer) sqlMap.queryForObject("buscarUltimoFechaAli");
        } catch (IOException ioe) {
            ioe.printStackTrace();
        } catch (SQLException sqle) {
            sqle.printStackTrace();
        } finally {
            return fechaAli;
        }
    }

     public boolean insertLoFe (LoFe nuevo) {
        boolean resultado = false;

        try {
            SqlMapClient sqlMap = SqlConnector.getInstance().getReady();
            sqlMap.insert("insertLoFe", nuevo);
            resultado = true;
        } catch (IOException ioe) {
            ioe.printStackTrace();
        } catch (SQLException sqle) {
            sqle.printStackTrace();
        }
        return resultado;
    }

     public boolean insertLote (Lote nuevo) {
        boolean resultado = false;

        try {
            SqlMapClient sqlMap = SqlConnector.getInstance().getReady();
            sqlMap.insert("insertLote", nuevo);
            resultado = true;
        } catch (IOException ioe) {
            ioe.printStackTrace();
        } catch (SQLException sqle) {
            sqle.printStackTrace();
        }
        return resultado;
    }
     
     public int UltimoLote() {
        int idLote = 0;
        try {
            SqlMapClient sqlMap = SqlConnector.getInstance().getReady();
            idLote = (Integer) sqlMap.queryForObject("buscarUltimoLote");
        } catch (IOException ioe) {
            ioe.printStackTrace();
        } catch (SQLException sqle) {
            sqle.printStackTrace();
        } finally {
            return idLote;
        }
    }

     public ArrayList<Lote> lotesPorAlimento(int idAlimento) {
        ArrayList<Lote> lotes = null;
        try {
            SqlMapClient sqlMap = SqlConnector.getInstance().getReady();
            lotes = (ArrayList) sqlMap.queryForList("buscarLotesPorAlimento",idAlimento);
        } catch (IOException ioe) {
            ioe.printStackTrace();
        } catch (SQLException sqle) {
            sqle.printStackTrace();
        } catch (Exception e) {
            e.printStackTrace();
        }finally {
            return lotes;
        }
    }

}
